@@ -2,6 +2,9 @@ class AdminPanelController < ApplicationController |
||
2 | 2 |
|
3 | 3 |
layout 'admin' |
4 | 4 |
|
5 |
+ def maintenance_mode |
|
6 |
+ end |
|
7 |
+ |
|
5 | 8 |
def index |
6 | 9 |
redirect_to admin_dashboard_path |
7 | 10 |
end |
@@ -49,7 +52,7 @@ class AdminPanelController < ApplicationController |
||
49 | 52 |
|
50 | 53 |
# Never trust parameters from the scary internet, only allow the white list through. |
51 | 54 |
def info_params |
52 |
- params.require(:info).permit(:website_name, :tagline, :contact_email, :default_language) |
|
55 |
+ params.require(:info).permit(:website_name, :tagline, :contact_email, :default_language, :maintenance_mode, :maintenance_title, :maintenance_message) |
|
53 | 56 |
end |
54 | 57 |
|
55 | 58 |
end |
@@ -1,10 +1,13 @@ |
||
1 | 1 |
class ApplicationController < ActionController::Base |
2 | 2 |
# Prevent CSRF attacks by raising an exception. |
3 | 3 |
# For APIs, you may want to use :null_session instead. |
4 |
+ |
|
4 | 5 |
protect_from_forgery with: :exception |
5 | 6 |
|
6 | 7 |
before_filter :config_site |
7 | 8 |
|
9 |
+ before_filter :check_admin_mode |
|
10 |
+ |
|
8 | 11 |
before_filter :configure_permitted_parameters, if: :devise_controller? |
9 | 12 |
|
10 | 13 |
def configure_permitted_parameters |
@@ -18,4 +21,14 @@ class ApplicationController < ActionController::Base |
||
18 | 21 |
I18n.default_locale = @config.default_language |
19 | 22 |
end |
20 | 23 |
|
24 |
+ protected |
|
25 |
+ |
|
26 |
+ def check_admin_mode |
|
27 |
+ if @config.maintenance_mode && controller_name != 'sessions' && !user_signed_in? && action_name != 'maintenance_mode' |
|
28 |
+ redirect_to maintenance_mode_path |
|
29 |
+ elsif !@config.maintenance_mode && !user_signed_in? && action_name == 'maintenance_mode' |
|
30 |
+ redirect_to root_path |
|
31 |
+ end |
|
32 |
+ end |
|
33 |
+ |
|
21 | 34 |
end |
@@ -0,0 +1,9 @@ |
||
1 |
+<div class="row"> |
|
2 |
+ <div class="span12"> |
|
3 |
+ <div class="hero-unit"> |
|
4 |
+ <h1><%= @config.maintenance_title %></h1> |
|
5 |
+ <p><%= @config.maintenance_message %></p> |
|
6 |
+ </div> |
|
7 |
+ <%= bootstrap_flash %> |
|
8 |
+ </div> |
|
9 |
+</div> |
@@ -14,6 +14,9 @@ |
||
14 | 14 |
<%= f.input :tagline, :label => (t 'admin_panel.tagline'), :input_html => { :class => 'input-xxlarge'} %> |
15 | 15 |
<%= f.input :default_language, collection: ["en", "pt-BR"], prompt:"Select default language", :label => (t 'admin_panel.default_language'), hint: ("<i>* "+(t "admin_panel.language_hint")+"</i>").html_safe %> |
16 | 16 |
<%= f.input :contact_email, :label => (t 'admin_panel.contact_email'), :input_html => {:class => 'input-large'} %> |
17 |
+ <%= f.input :maintenance_mode, :label => (t 'admin_panel.maintenance_mode') %> |
|
18 |
+ <%= f.input :maintenance_title, :label => (t 'admin_panel.maintenance_title') %> |
|
19 |
+ <%= f.input :maintenance_message, :label => (t 'admin_panel.maintenance_message'), :input_html => {:class => 'input-large'} %> |
|
17 | 20 |
|
18 | 21 |
</div> |
19 | 22 |
|
@@ -223,6 +223,9 @@ en: |
||
223 | 223 |
contact_messages: Contact Messages |
224 | 224 |
new: New |
225 | 225 |
messages: Messages |
226 |
+ maintenance_mode: Maintenance Mode |
|
227 |
+ maintenance_title: Maintenance Page Title |
|
228 |
+ maintenance_message: Maintenance Page Message |
|
226 | 229 |
nav: |
227 | 230 |
admin_panel: Admin Panel |
228 | 231 |
account: Account |
@@ -225,6 +225,9 @@ pt-BR: |
||
225 | 225 |
contact_messages: Mensagens de Contato |
226 | 226 |
new: Nova |
227 | 227 |
messages: Mensagens |
228 |
+ maintenance_mode: Modo de Manutenção |
|
229 |
+ maintenance_title: Titulo da página de manutenção |
|
230 |
+ maintenance_message: Mensagem de manutenção |
|
228 | 231 |
nav: |
229 | 232 |
admin_panel: Painel de Controle |
230 | 233 |
account: Conta |
@@ -3,6 +3,8 @@ RailsWebsiteTemplate::Application.routes.draw do |
||
3 | 3 |
resources :contact_messages, path: '/contact' |
4 | 4 |
|
5 | 5 |
resources :uploads |
6 |
+ |
|
7 |
+ get "maintenance_mode" => "admin_panel#maintenance_mode", :as => :maintenance_mode |
|
6 | 8 |
|
7 | 9 |
get "admin/dashboard" => "admin_panel#dashboard", :as => :admin_dashboard |
8 | 10 |
get "admin" => "admin_panel#index" |
@@ -0,0 +1,7 @@ |
||
1 |
+class AddMaintenanceToInfos < ActiveRecord::Migration |
|
2 |
+ def change |
|
3 |
+ add_column :infos, :maintenance_mode, :boolean |
|
4 |
+ add_column :infos, :maintenance_title, :string |
|
5 |
+ add_column :infos, :maintenance_message, :text |
|
6 |
+ end |
|
7 |
+end |
@@ -11,7 +11,7 @@ |
||
11 | 11 |
# |
12 | 12 |
# It's strongly recommended that you check this file into your version control system. |
13 | 13 |
|
14 |
-ActiveRecord::Schema.define(version: 20141024174901) do |
|
14 |
+ActiveRecord::Schema.define(version: 20141031021236) do |
|
15 | 15 |
|
16 | 16 |
# These are extensions that must be enabled in order to support this database |
17 | 17 |
enable_extension "plpgsql" |
@@ -64,6 +64,9 @@ ActiveRecord::Schema.define(version: 20141024174901) do |
||
64 | 64 |
t.string "default_language" |
65 | 65 |
t.datetime "created_at" |
66 | 66 |
t.datetime "updated_at" |
67 |
+ t.boolean "maintenance_mode" |
|
68 |
+ t.string "maintenance_title" |
|
69 |
+ t.text "maintenance_message" |
|
67 | 70 |
end |
68 | 71 |
|
69 | 72 |
create_table "uploads", force: true do |t| |